package cn.drenal.capcap.entity.vo;

import cn.drenal.capcap.entity.Tag;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.time.LocalDateTime;

/**
 * 标签VO，用于返回包含动态计算使用次数的标签数据
 */
@Data
public class TagVO {
    /**
     * 主键
     */
    private Long id;

    /**
     * 标签名称
     */
    private String name;

    /**
     * 标签描述
     */
    private String description;

    /**
     * 使用次数（动态计算）
     */
    private Long useCount;

    /**
     * 状态：0-禁用，1-启用
     */
    private Integer status;

    /**
     * 是否为导航标签
     */
    private Integer fixedNav;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 从Tag实体转换为TagVO
     *
     * @param tag Tag实体
     * @return TagVO对象
     */
    public static TagVO fromTag(Tag tag) {
        if (tag == null) {
            return null;
        }
        
        TagVO tagVO = new TagVO();
        BeanUtils.copyProperties(tag, tagVO);
        // useCount将在Service层动态计算
        
        // 格式化时间
        if (tag.getCreateTime() != null) {
            tagVO.setCreateTime(tag.getCreateTime());
        }
        if (tag.getUpdateTime() != null) {
            tagVO.setUpdateTime(tag.getUpdateTime());
        }
        
        return tagVO;
    }
}